<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
    <meta name="keywords" content="hexo, autumn" />
    <title>
        iOS开发
    </title>
    <!-- favicon -->
    
    <link rel="icon" href="https://cdn.jsdelivr.net/gh/frontendsophie/hexo-theme-autumn@1.0.0/source/img/favicon.ico" />
     <link rel="stylesheet" href="/blog/css/style.css">

    <!-- highlight -->
    <link rel="stylesheet" href="https://cdn.bootcss.com/highlight.js/9.12.0/styles/github-gist.min.css" />
    <script src="//cdn.bootcss.com/highlight.js/9.2.0/highlight.min.js"></script>
    <script>
        hljs.initHighlightingOnLoad()
    </script>
    <script src="https://cdn.jsdelivr.net/gh/frontendsophie/hexo-infinite-scroll@2.0.0/dist/main.js"></script>

    <script>
        infiniteScroll()

        window.addEventListener('DOMContentLoaded', function () {
            const [
                mainTitle,
                mobileMenu,
                mobileMainTitle,
                mobileMenuBtn,
                ipadMenuBtn,
                aside,
                closeBtn,
            ] = getEle(
                '#main-title',
                '.mobile-menu',
                '.mobile-menu h3',
                '.mobile-menu button',
                '.ipad-menu',
                'aside',
                'aside .close',
            )
            const io = new IntersectionObserver(entries => {
                if (entries[0].intersectionRatio <= 0) {
                    mobileMainTitle.classList.remove('invisibile')
                } else {
                    mobileMainTitle.classList.add('invisibile')
                }
            })
            io.observe(mainTitle)

            clickToggleAside(mobileMenuBtn)
            clickToggleAside(ipadMenuBtn)
            clickToggleAside(closeBtn, false)

            const isMenuVisible = window.getComputedStyle(mobileMenu).display !== 'none'
            if (isMenuVisible) document.body.style.background = 'none'

            function getEle(...args) {
                return args.map(arg => document.querySelector(arg))
            }

            function clickToggleAside(btn, show = true) {
                btn.addEventListener('click', function () {
                    if (show) {
                        aside.style.display = 'block'
                    } else {
                        aside.style.display = 'none'
                    }
                })
            }
        })
    </script>
</head>

<body style="background: url(https://cdn.jsdelivr.net/gh/frontendsophie/hexo-theme-autumn@1.0.0/source/img/button-bg.png) #f3f3f3">
    <div class="container">
        <header class="header">
    <nav class="mobile-menu" style="background: url(https://cdn.jsdelivr.net/gh/frontendsophie/hexo-theme-autumn@1.0.0/source/img/button-bg.png) #f3f3f3">
        <h3 class="invisibile">
            <a href="/blog/" class="logo">
                iOS开发
            </a>
        </h3>
        <button class="menu">menu</button>
    </nav>

    <button class="ipad-menu menu">menu</button>

    <h1 class="title" id="main-title">
        <a href="/blog/" class="logo">
            iOS开发
        </a>
    </h1>
    <h2 class="desc">
        
    </h2>

    <div class="links">
        <ul>
            
            <li>
                <a href="https://github.com/FrontendSophie" target="_blank" rel="noopener">
                    Github
                </a>
            </li>
            
            <li>
                <a href="https://www.linkedin.com/in/frontendsophie/" target="_blank" rel="noopener">
                    LinkedIn
                </a>
            </li>
            
        </ul>
    </div>
</header>
        <main class="main">
            <article class="post">
    
    
    
    <h2 class="post-title">
        IOS开发框架搭建--添加pch预处理文件
    </h2>
    <ul class="post-date">
        <li>
            2019-12-03
        </li>
        <li>
            selinaSun
        </li>
    </ul>
    <div class="post-content">
        <h2 id="pch文件即预编译头文件，可以用于引入一下常用的-h头文件的引用。编译器就会自动的将pch文件中的头文件添加到所有的源文件中去，很大程度上带来了编程的便利性，同时也带来了一些问题，添加过多预编译头文件会造成编译用时过长，所以添加时要有取舍。iOS开发中多用于默认框架-lt-Foundation-Foundation-h-gt-已及-lt-UIKit-UIKit-h-gt-的引入。"><a href="#pch文件即预编译头文件，可以用于引入一下常用的-h头文件的引用。编译器就会自动的将pch文件中的头文件添加到所有的源文件中去，很大程度上带来了编程的便利性，同时也带来了一些问题，添加过多预编译头文件会造成编译用时过长，所以添加时要有取舍。iOS开发中多用于默认框架-lt-Foundation-Foundation-h-gt-已及-lt-UIKit-UIKit-h-gt-的引入。" class="headerlink" title=".pch文件即预编译头文件，可以用于引入一下常用的.h头文件的引用。编译器就会自动的将pch文件中的头文件添加到所有的源文件中去，很大程度上带来了编程的便利性，同时也带来了一些问题，添加过多预编译头文件会造成编译用时过长，所以添加时要有取舍。iOS开发中多用于默认框架&lt;Foundation/Foundation.h&gt;已及&lt;UIKit/UIKit.h&gt;的引入。"></a>.pch文件即预编译头文件，可以用于引入一下常用的.h头文件的引用。编译器就会自动的将pch文件中的头文件添加到所有的源文件中去，很大程度上带来了编程的便利性，同时也带来了一些问题，添加过多预编译头文件会造成编译用时过长，所以添加时要有取舍。iOS开发中多用于默认框架&lt;Foundation/Foundation.h&gt;已及&lt;UIKit/UIKit.h&gt;的引入。</h2><h3 id="创建方法"><a href="#创建方法" class="headerlink" title="创建方法"></a>创建方法</h3><h3 id="在已有项目中，右键New-File"><a href="#在已有项目中，右键New-File" class="headerlink" title="在已有项目中，右键New File.."></a>在已有项目中，右键New File..</h3><p><img src="https://upload-images.jianshu.io/upload_images/637119-a2a41ed1c02c23db.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/730" alt="img"></p>
<h3 id="弹出选择框，在左侧Menu选择IOS类目下的Other，在右侧选择PCH-File-选择Next，自动创建成功。"><a href="#弹出选择框，在左侧Menu选择IOS类目下的Other，在右侧选择PCH-File-选择Next，自动创建成功。" class="headerlink" title="弹出选择框，在左侧Menu选择IOS类目下的Other，在右侧选择PCH File.选择Next，自动创建成功。"></a>弹出选择框，在左侧Menu选择IOS类目下的Other，在右侧选择PCH File.选择Next，自动创建成功。</h3><h3 id="选择项目中的-pch文件显示如下"><a href="#选择项目中的-pch文件显示如下" class="headerlink" title="选择项目中的.pch文件显示如下"></a>选择项目中的.pch文件显示如下</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#ifndef PrefixHeader_pch</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#define PrefixHeader_pch</span></span><br><span class="line"></span><br><span class="line">// Include any system framework and library headers here that should be included <span class="keyword">in</span> all compilation units.</span><br><span class="line"></span><br><span class="line">// You will also need to <span class="built_in">set</span> the Prefix Header build setting of one or more of your targets to reference this file.</span><br><span class="line"></span><br><span class="line"><span class="comment">#endif/* PrefixHeader_pch */</span></span><br></pre></td></tr></table></figure>
<h3 id="在-define-和-endif-中间添加以下代码"><a href="#在-define-和-endif-中间添加以下代码" class="headerlink" title="在#define 和 #endif 中间添加以下代码"></a>在#define 和 #endif 中间添加以下代码</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#ifdef __OBJC__</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#import &lt;Foundation/Foundation.h&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#import &lt;UIKit/UIKit.h&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#endif</span></span><br></pre></td></tr></table></figure>
<h3 id="其他头文件可以同样方式-import至其中。"><a href="#其他头文件可以同样方式-import至其中。" class="headerlink" title="其他头文件可以同样方式#import至其中。"></a>其他头文件可以同样方式#import至其中。</h3><h3 id="这时候可以将Appdelegate中的-lt-UIKit-UIKit-h-gt-注释掉，编译一下"><a href="#这时候可以将Appdelegate中的-lt-UIKit-UIKit-h-gt-注释掉，编译一下" class="headerlink" title="这时候可以将Appdelegate中的&lt;UIKit/UIKit.h&gt;注释掉，编译一下"></a>这时候可以将Appdelegate中的&lt;UIKit/UIKit.h&gt;注释掉，编译一下</h3><h3 id="Fail了？那就对了！有一个需要注意的点，-pch生成后需要手动配置一下编译路径，不然可能搜索不到-pch文件，造成编译失败。"><a href="#Fail了？那就对了！有一个需要注意的点，-pch生成后需要手动配置一下编译路径，不然可能搜索不到-pch文件，造成编译失败。" class="headerlink" title="Fail了？那就对了！有一个需要注意的点，.pch生成后需要手动配置一下编译路径，不然可能搜索不到.pch文件，造成编译失败。"></a>Fail了？那就对了！有一个需要注意的点，.pch生成后需要手动配置一下编译路径，不然可能搜索不到.pch文件，造成编译失败。</h3><h3 id="手动添加-pch路径"><a href="#手动添加-pch路径" class="headerlink" title="手动添加.pch路径"></a>手动添加.pch路径</h3><h3 id="building-setting中的Prefix-header选项双击，注意debug和release两栏都要添加：-SRCROOT-XXFramework-PrefixHeader-pch"><a href="#building-setting中的Prefix-header选项双击，注意debug和release两栏都要添加：-SRCROOT-XXFramework-PrefixHeader-pch" class="headerlink" title="building setting中的Prefix header选项双击，注意debug和release两栏都要添加：$(SRCROOT)/XXFramework/PrefixHeader.pch"></a>building setting中的Prefix header选项双击，注意debug和release两栏都要添加：$(SRCROOT)/XXFramework/PrefixHeader.pch</h3><h3 id="SRCROOT-为当前目录路径-后面是-pch在项目中的位置路径"><a href="#SRCROOT-为当前目录路径-后面是-pch在项目中的位置路径" class="headerlink" title="$(SRCROOT)为当前目录路径 后面是.pch在项目中的位置路径"></a>$(SRCROOT)为当前目录路径 后面是.pch在项目中的位置路径</h3>
    </div>
</article>
        </main>
        <aside class="aside">
            <div class="close"></div>
            <section class="aside-section">
                
    <h1>Categories</h1>

    

            </section>
            <section class="aside-section">
                
    <h1>Archives</h1>

    <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/blog/archives/2019/">2019</a></li></ul>


            </section>
            <section class="aside-section tag">
                
    <h1>Tags</h1>

    

            </section>
        </aside>
    </div>
</body>

</html>